golang 支持多併發,這個章節我們來講如何使用 goroutine 來執行多併發
使用 go 關鍵字來執行 func
範例中無法看到 "Hello, playground" 字串的原因
要執行 Hello func 時是 main func 已經結束
package main
import (
"fmt"
)
func Hello() {
fmt.Println("Hello, playground")
}
func main() {
go Hello()
fmt.Println("main")
}
將 main func 增添 time.Sleep ,故意延遲 main func 執行時間
這時我們可以看到 "Hello, playground" 字串有列印出來了
package main
import (
"fmt"
"time"
)
func Hello() {
fmt.Println("Hello, playground")
}
func main() {
go Hello()
time.Sleep(1 * time.Second)
fmt.Println("main")
}
使用 sync.waitgroup 讓主線程等待協程完成
package main
import (
"fmt"
"sync"
)
func Hello(wg *sync.WaitGroup) {
for i := 0; i <= 100; i++ {
fmt.Println("Hello, playground", i)
}
defer wg.Done()
}
func main() {
var wg sync.WaitGroup
wg.Add(1)
go Hello(&wg)
fmt.Println("main")
wg.Wait()
}